package com.cnh.o2o.service;

import java.io.IOException;
import java.util.List;

import com.cnh.o2o.dto.ImageHolder;
import com.cnh.o2o.dto.ShopCategoryExecution;
import com.cnh.o2o.entity.ShopCategory;
import com.cnh.o2o.entity.ShopCategory2;
import com.fasterxml.jackson.core.JsonProcessingException;

public interface ShopCategoryService {
	/**
	 * 根据查询条件获取ShopCategory列表
	 * @param shopCategoryCondition
	 * @return
	 */
	List<ShopCategory2> getShopCategoryList(ShopCategory2 shopCategoryCondition) throws Exception;
	
	/**
	 * 查询指定某个店铺下的所有商品类别信息
	 * 
	 * @param long shopId
	 * @return List<ProductCategory>
	 * @throws JsonProcessingException
	 * @throws IOException
	 */
	List<ShopCategory2> getFirstLevelShopCategoryList() throws IOException;
	
	/**
	 * 
	 * @return
	 * @throws IOException
	 */
	List<ShopCategory2> getAllSecondLevelShopCategory() throws IOException;
	
	List<ShopCategory2> getAllShopCategoryList() throws IOException;
	/**
	 * 
	 * @param shopCategory
	 * @return
	 */
	ShopCategory getShopCategoryById(Long shopCategoryId);
	
	/**
	 * 
	 * @param shopCategory
	 * @param thumbnail
	 * @return
	 */
	ShopCategoryExecution addShopCategory(ShopCategory2 shopCategory,
			ImageHolder thumbnail);
	
	/**
	 * 
	 * @param shopCategory
	 * @param thumbnail
	 * @param thumbnailChange
	 * @return
	 */
	ShopCategoryExecution modifyShopCategory(ShopCategory2 shopCategory2,
			ImageHolder thumbnail, boolean thumbnailChange);
	
	/**
	 * 
	 * @param shopCategoryId
	 * @return
	 */
	ShopCategoryExecution removeShopCategory(long shopCategoryId);
	/**
	 * 
	 * @param shopCategoryIdList
	 * @return
	 */
	ShopCategoryExecution removeShopCategoryList(List<Long> shopCategoryIdList);

}
